/*
 * File:    TagInterface.java
 * Created: 04-Feb-2009
 * Version: $Id$
 *
 * COPYRIGHT (C) 2009, Bitgate Mobile, LLC.  All Rights Reserved.
 *
 * software@bitgatemobile.com
 */

package com.webplasm.render.tags;

import java.util.List;

/**
 * This interface describes a tag's attributes and description.  Any tags that are recognized by Webplasm must implement
 * this interface.
 * 
 * @author kenji
 * @since Webplasm
 */
public interface TagInterface {
	/**
	 * Retrieves the namespace for which this tag applies.
	 * 
	 * @return <code>String</code> containing the namespace.
	 */
	public String getNamespace();
	
	/**
	 * Retrieves a simple description of the rendering tag.
	 * 
	 * @return <code>String</code> containing the description.
	 */
	public String getDescription();
	
	/**
	 * Returns a plain text list of attributes that this tag provides.
	 * 
	 * @return <code>List&lt;String&gt;</code> of attributes.
	 */
	public List<String> getAttributes();
	
	/**
	 * Returns a plain text list of managed child nodes that the tag will handle manually (only if the
	 * "canRecurse" flag returns a false.
	 * 
	 * @return <code>List&lt;String&gt;</code> of managed nodes, <code>null</code> if none are managed manually.
	 */
	public List<String> getManagedNodes();
}